#include<stdio.h>
#include<math.h>
/*
自守数是指一个数的平方的尾数等于该数自身的自然数，如253=625，762=5776,9376=87909376。编程求一定范围(此处以10000为例)内的所有自守数，
*/
int numweishu(int num)
{
	if(num==0) return 1;
	int cnt=0;
	while(num)
	{
		num/=10;
		cnt++;
	}
	return cnt;
}

void zishoushu(int num)
{
	int i,j;
	int num1,temp;
	int cnt;
	for(i=0;i<=num;i++)
	{
		temp=1;
		cnt=numweishu(i);//数字位数 25 就是 cnt=2
		num1=pow(i,2);//数字平方    25*25=625
		for(j=0;j<cnt;j++)
		{
			temp*=10;//要取余的数  100
		}
		//开始判断
		if(num1%temp==i)
		{
			printf(" %d",i);
		}
	}
}

int main()
{
	int num;
	printf("请输入一个数表示范围:\n");
	scanf("%d",&num);
	zishoushu(num);
	
	
	return 0;
}